package com.crm.system.service.customerManager;

import com.crm.common.model.DhPageInfo;
import com.crm.model.entity.customerManager.SingleProductCustomerContact;
import com.crm.model.qo.customerManager.SingleProductCustomerContactQO;
import com.crm.model.qo.customerManager.SingleProductCustomerQO;
import com.crm.model.vo.cluePoolManager.ClueFollowVO;
import com.crm.model.vo.cluePoolManager.ClueVisitRecordVO;
import com.crm.model.vo.customerManager.SingleProductCustomerVO;

import java.util.List;

/**
 * @ Author ：pym
 * @ Date   ：2021/4/29 15:16
 */
public interface SingleProductCustomerService {
    /**
     * 客户管理-单品客户
     * @Author pym
     * @Date  2021/4/29 15:17
     * @param pageIndex -页码
     * @param pageSize -分页大小
     * @param singleProductCustomerQO -查询条件
     * @param sortName -排序列名字
     * @param sortOrder -排序规则(asc/desc)
     * @return {@link {com.crm.common.model.DhPageInfo<com.crm.model.vo.customerManager.SingleProductCustomerVO>}}
     */
    DhPageInfo<SingleProductCustomerVO> selectSingleProductCustomerList(Integer pageIndex, Integer pageSize, SingleProductCustomerQO singleProductCustomerQO, String sortName, String sortOrder);

    /**
     * 新增单品客户
     * @Author pym
     * @Date  2021/4/30 11:34
     * @param customerId 客户ID
     * @return {@link {java.lang.String}}
     */
    String addSingleProductCustomer(String customerId);

    /**
     * 单品客户跟进记录
     * @Author pym
     * @Date  2021/5/12 10:57
     * @param pageIndex 页码
     * @param pageSize 分页大小
     * @param sortName 排序列名字
     * @param sortOrder 排序规则(asc/desc)
     * @param singleProductCustomerId 单品客户ID
     * @return {@link {com.crm.common.model.DhPageInfo<com.crm.model.vo.cluePoolManager.ClueFollowVO>}}
     */
    DhPageInfo<ClueFollowVO> selectClueFollowList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, String singleProductCustomerId);


    /**
     * @Description: 根据客户ID获取单品客户跟进记录
     * @Param: [singleProductCustomerId]
     * @Return: java.util.List<com.crm.model.vo.cluePoolManager.ClueFollowVO>
     * @Author: lixq-f
     * @Date: 2021/5/24
    **/
    List<ClueFollowVO> selectSingleFollowsByCustomerId(String singleProductCustomerId);


    /**
     * 单品客户拜访记录
     * @Author pym
     * @Date  2021/5/12 16:44
     * @param pageIndex 页码
     * @param pageSize 分页大小
     * @param sortName 排序列名字
     * @param sortOrder 排序规则(asc/desc)
     * @param singleProductCustomerId 单品客户ID
     * @return {@link {com.crm.common.model.DhPageInfo<com.crm.model.vo.cluePoolManager.ClueVisitRecordVO>}}
     */
    DhPageInfo<ClueVisitRecordVO> selectClueVisitRecordList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, String singleProductCustomerId);

    /**
     * 单品客户联系人
     * @Author pym
     * @Date  2021/5/12 18:27
     * @param pageIndex 页码
     * @param pageSize 分页大小
     * @param sortName 排序列名字
     * @param sortOrder 排序规则(asc/desc)
     * @param singleProductCustomerId 单品客户主键ID
     * @return {@link {com.crm.common.model.DhPageInfo<com.crm.model.entity.customerManager.SingleProductCustomerContact>}}
     */
    DhPageInfo<SingleProductCustomerContact> selectSingleProductCustomerContactList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, String singleProductCustomerId);

    /**
     * 新增单品客户联系人
     * @Author pym
     * @Date  2021/5/13 10:34
     * @param singleProductCustomerContactQO 单品客户联系人参数
     * @return {@link {java.lang.Boolean}}
     */
    String addSingleProductCustomerContact(SingleProductCustomerContactQO singleProductCustomerContactQO);

    /**
     * 单品客户线上跟进联系人
     * @Author pym
     * @Date  2021/5/13 14:25
     * @param singleProductCustomerId 单品客户主键ID
     * @return {@link {java.util.List<com.crm.model.entity.customerManager.SingleProductCustomerContact>}}
     */
    List<SingleProductCustomerContact> selectSingleProductCustomerContacts(String singleProductCustomerId);


    /**
     * @Description: 根据客户ID获取单品客户联系人
     * @Param: [singleProductCustomerId]
     * @Return: java.util.List<com.crm.model.entity.customerManager.SingleProductCustomerContact>
     * @Author: lixq-f
     * @Date: 2021/5/24
    **/
    List<SingleProductCustomerContact> singleCustomerContactByCustomerId(String singleProductCustomerId);

    /**
     * 单品客户线上跟进判断联系人是否存在
     * @Author pym
     * @Date  2021/6/16 14:06
     * @param singleProductCustomerId 单品客户Id
     * @param contactInformation 联系方式
     * @param accountId 账号Id
     * @return {@link {com.crm.model.entity.customerManager.SingleProductCustomerContact}}
     */
    SingleProductCustomerContact getSingleProductCustomerContactById(String singleProductCustomerId, String contactInformation, String accountId);

    /**
     * 删除单品客户
     * @Author pym
     * @Date  2021/7/15 10:05
     * @param singleProductCustomerId 单品客户Id
     * @return {@link {java.lang.Boolean}}
     */
    void deleteSingleProductCustomer(String singleProductCustomerId);
}
